<!DOCTYPE html>
<html lang="zh-CN">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>180constructor属性</title>
</head>

<body>
  <h1>180constructor属性</h1>
  <script>
    /* 
      1 constructor属性
        每个构造函数的原型对象中，都有constructor属性，该属性指向构造函数。
        即构造函数和原型对象通过prototype和constructor属性互指。
    */
    function Star(uname, age) {
      this.uname = uname
      this.age = age
    }
    Star.prototype.sing = function () {
      console.log('唱歌')
    }
    console.log(Star.prototype) // 原型对象
    console.log(Star.prototype.constructor) // 构造函数
    console.log(Star.prototype.constructor === Star) // 构造函数

    // 给prototype重新赋值
    function Animal(aName, age) {
      this.aName = aName
      this.age = age
    }
    console.log(Animal.prototype)
    Animal.prototype = {
      constructor: Animal,
      eat() {
        console.log('meat')
      },
      run() {
        console.log('leg')
      }
    }
    console.log(Animal.prototype)
  </script>
</body>

</html>